package com.spi.controller;

import com.spi.service.AsyncService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @Autowired
    private AsyncService asyncService;

    /**
     * websocket整体流程：
     * 前端用户点击按钮，触发 WebSocket 连接建立。
     * 前端发送 getSessionId 消息给后端，后端生成唯一的 sessionId 并返回给前端。
     * 前端使用获取到的 sessionId 发送 HTTP 请求给后端，触发异步任务。
     * 后端的异步任务在单独的线程中执行，模拟耗时操作。
     * 异步任务完成后，后端通过 WebSocket 向前端发送处理结果消息。
     * 前端接收到消息后，将消息显示在页面上。
     * @param sessionId
     * @return
     */
    @GetMapping("/startTask/{sessionId}")
    @CrossOrigin
    public String startTask(@PathVariable String sessionId) {
        asyncService.doLongTask(sessionId);
        return "任务已开始处理，请等待通知";
    }
}
